iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 22
0
Software Development

從零開始的Python練成記系列 第 22

[Day 22]要如何對List內的數值一並進行運算?

  • 分享至 

  • xImage
  •  

今天的文章就直接切入主題好了,假設到了學期末,班上每個同學的成績普遍不理想 (當光光) 的情況下,老師不想面對這種情形時,就會透過全班成績開平方根再乘個8.xxx ~ 10之類的,那就用python來試著寫看看吧:

"""這裡先簡單示範就好,所以就只是單純用list進行數字存放"""
score = [38, 29, 53, 17, 8, 49, 11, 9]
new_list = score ** 0.5
print(str(new_list))

可是,如果你真的打算像這樣直接進行運算的話,系統便會跳出跟下圖一樣的警示:https://ithelp.ithome.com.tw/upload/images/20191008/20120985xarjPQ4mMi.jpg
這是要告訴你「無法對list進行float才能進行的運算方式」,並建議你可以透過for迴圈對list內的每個職個別進行運算並存放回去
使用者OS:那我用Excel還比較快
但是,這個情況其實可以透過導入numpy來改善這個問題,只不過這個物件是python的額外插件,需要額外進行安裝設定才能導入與使用
還好PyCharm可以直接幫我下載/安裝
在這裡就必須先做個說明,numpy其實可以解釋為可運算的Dictionary資料架構,只不過這種資料架構並沒有辦法同時存放不同類型的參數,若有這種情況的時候就會變成是下面的情況:

import numpy as np
tester_np = np.array([1, "Hello", False])
print(tester_np)
print(tester_np.dtype) #輸出np.array的物件屬性

"""
輸出結果如下:
['1' 'Hello' 'False'] 
<U11
>>>>雖然看起來並沒有不一樣,但是屬性已經是以Unicode 11的結構進行存放,簡單來說,所有Array內的元素都已經轉為字串
"""

好啦,那就來看看導入numpy之後有什麼不一樣吧:

import numpy as np
#先宣告並進行簡稱,這樣後面coding要用到就會比較輕鬆
score = [38, 29, 53, 17, 8, 49, 11, 9]
np_score = np.array(score)
#透過numpy的array功能來將原本的list轉錄進去,變成一個array型態
new_score = (np_score ** 0.5) * 12
#而numpy的array就可以直接進行運算了
print(new_score)

比較結果的時間到了:
https://ithelp.ithome.com.tw/upload/images/20191008/20120985iZbtHOQaoc.jpg
學生的成績變漂亮了,老師也比較好做人了 才怪,只是不用寫太多的報告書而已


上一篇
[Day 21]曾經,我在Java的最大罩門:檔案讀寫
下一篇
[Day 23]真正精采的要來了:把DataFrame型式轉出到txt檔
系列文
從零開始的Python練成記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言